package de.bml.versandanzeige;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;

public class GegenstaendeAuflistenActivity extends ListActivity {

	private static final int GEGENSTANDSTYP_AUSWAEHLEN_REQUEST = 0;
	private static final int GEGENSTAND_ERSTELLEN_REQUEST = 1;

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.gegenstaende_anzeigen, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle item selection
		switch (item.getItemId()) {
		case R.id.menu_neuer_gegenstand:
			gegenstandHinzufuegen();
			return true;
		default:
			return super.onOptionsItemSelected(item);
		}
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.gegenstaende_liste);

		getListView().setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				Gegenstand gewaehlterGegenstand = Gegenstand.getAll().get(
						position);
				Intent intent = new Intent(getApplicationContext(),
						GegenstandAnzeigenActivity.class);
				intent.putExtra(HauptActivity.GEGENSTAND_EXTRA,
						gewaehlterGegenstand.getId());
				startActivity(intent);
			}
		});
	}

	@Override
	protected void onResume() {
		super.onResume();

		setListAdapter(new ArrayAdapter<Gegenstand>(this,
				android.R.layout.simple_list_item_1, Gegenstand.getAll()));
	}


	public void gegenstandHinzufuegen(View view) {
		gegenstandHinzufuegen();
	}

	public void gegenstandHinzufuegen() {
		Intent auswaehlenIntent = new Intent(this,
				GegenstandstypAuswaehlenActivity.class);
		startActivityForResult(auswaehlenIntent,
				GEGENSTANDSTYP_AUSWAEHLEN_REQUEST);
	}

	@Override
	public void onActivityResult(int requestCode, int resultCode, Intent intent) {
		if (resultCode == Activity.RESULT_OK) {
			// If the request went well (OK) and the request was
			switch (requestCode) {
			case GEGENSTANDSTYP_AUSWAEHLEN_REQUEST:
				Gegenstandstyp type = Gegenstandstyp.get(intent.getLongExtra(
						HauptActivity.GEGENSTANDSTYP_EXTRA, 0));
				Intent newIntent = new Intent(this,
						GegenstandErstellenActivity.class);
				newIntent.putExtra(HauptActivity.GEGENSTANDSTYP_EXTRA,
						type.getId());
				startActivity(newIntent);
				break;
			case GEGENSTAND_ERSTELLEN_REQUEST:
				Gegenstand gewaehlterGegenstand = Gegenstand.get(intent
						.getLongExtra(HauptActivity.GEGENSTAND_EXTRA, 0));
				Intent data = new Intent();
				data.putExtra(HauptActivity.GEGENSTAND_EXTRA,
						gewaehlterGegenstand.getId());
				setResult(RESULT_OK, data);
				finish();
				break;
			}
		}
	}
}
